//第一步导入axios
import axios from "axios";
import QS from "qs"; //post请求时，把参数系列化

//第二步新的常量axios
const req = axios.create({
  // baseURL: "http://data.cngy.gov.cn/",
  // baseURL: "api",
  baseURL: "https://mockapi.eolink.com/",
  timeout: 60000, //设置超时时间
  responseType: "json",
  withCredentials: false, // 允许携带cookie
  changeOrigin: true, //是否跨域
});

// 第三步请求拦截
// axios.defaults.headers["Content-Type"] = "application/json;charset=UTF-8";
req.interceptors.request.use(
  config => {
    // 配置请求头
    config.headers.token = "777777788888888888";
    config.data = QS.stringify(config.data);
    config.headers = {
      "Content-Type": "application/x-www-form-urlencoded", // 传参方式表单
      // "Content-Type": "application/json;charset=UTF-8",
      token: "6666666668888888888", // 这里自定义配置，这里传的是token
    };
    return config;
  },
  error => {
    return Promise.reject(error);
  }
);

//第四步 设置响应拦截
req.interceptors.response.use(
  response => {
    return response.data;
  },
  error => {
    const { response } = error;
    if (response) {
      // 请求已发出，但是不在2xx的范围
      return Promise.reject(response.data);
    } else {
    }
  }
);

// 封装 GET POST 请求并导出
export function request(url = "", params = {}, type = "POST") {
  //设置 url params type 的默认值
  return new Promise((resolve, reject) => {
    let promise;
    if (type.toUpperCase() === "GET") {
      promise = req({
        url,
        params,
      });
    } else if (type.toUpperCase() === "POST") {
      promise = req({
        method: "POST",
        url,
        data: params,
      });
    }
    //处理返回
    promise
      .then(res => {
        resolve(res);
      })
      .catch(err => {
        reject(err);
      });
  });
}

// //第一步导入axios
// import axios from "axios";
// // import { showMessage } from "./status"; // 引入状态码文件
// import { ElMessage } from "element-plus"; // 引入el 提示框，这个项目里用什么组件库这里引什么

// // 设置接口超时时间
// axios.defaults.timeout = 60000;

// // 请求地址，这里是动态赋值的的环境变量，下一篇会细讲，这里跳过
// // @ts-ignore
// axios.defaults.baseURL = "/api";

// //http request 拦截器
// axios.interceptors.request.use(
//   config => {
//     // 配置请求头
//     config.headers = {
//       //'Content-Type':'application/x-www-form-urlencoded',   // 传参方式表单
//       "Content-Type": "application/json;charset=UTF-8", // 传参方式json
//       token: "6666666668888888888", // 这里自定义配置，这里传的是token
//     };
//     return config;
//   },
//   error => {
//     return Promise.reject(error);
//   }
// );

// //http response 拦截器
// axios.interceptors.response.use(
//   response => {
//     console.log(response);
//     return response;
//   },
//   error => {
//     const { response } = error;
//     if (response) {
//       // 请求已发出，但是不在2xx的范围
//       // showMessage(response.status); // 传入响应码，匹配响应码对应信息
//       return Promise.reject(response.data);
//     } else {
//       ElMessage.warning("网络连接异常,请稍后再试!");
//     }
//   }
// );

// // 封装 GET POST 请求并导出
// export function request(url = "", params = {}, type = "POST") {
//   //设置 url params type 的默认值
//   return new Promise((resolve, reject) => {
//     let promise;
//     if (type.toUpperCase() === "GET") {
//       promise = axios({
//         url,
//         params,
//       });
//     } else if (type.toUpperCase() === "POST") {
//       promise = axios({
//         method: "POST",
//         url,
//         data: params,
//       });
//     }
//     //处理返回
//     promise
//       .then(res => {
//         resolve(res);
//       })
//       .catch(err => {
//         reject(err);
//       });
//   });
// }
